package xginxgodb

import (
	"encoding/json"
	"strings"

	"gitee.com/xiaoyutab/xgotool/https"
	"gitee.com/xiaoyutab/xgotool/optional/xlog"
	"gitee.com/xiaoyutab/xgotool/xgodb"
	"gitee.com/xiaoyutab/xgotool/xgodb/xgodbconfig"
	"gitee.com/xiaoyutab/xgotool/xstring"
)

// 配置项编辑后的同步推送记录
func config_edit(name string) error {
	// 配置项同步流程
	// 该函数会跳过【"FRAM_SYNC_URL", "FRAM_SYNC_URL_AES", "FRAM_SYNC_DOMAIN", "FRAM_SYNC_DOMAIN_AES"】这几项的配置变更
	if xgodb.GetString("FRAM_SYNC_URL") == "" ||
		xgodb.GetString("FRAM_SYNC_URL_AES") == "" ||
		xgodb.GetString("FRAM_SYNC_DOMAIN") == "" ||
		xgodb.GetString("FRAM_SYNC_DOMAIN_AES") == "" {
		return nil
	}
	// 获取配置项详情
	inf := xgodbconfig.Getconfigure(name)
	if inf.Id == 0 {
		return xlog.AE("配置项获取失败", nil)
	}
	// 进行json格式化
	config_b, err := json.Marshal(inf)
	if err != nil {
		return xlog.AE("配置项JSON化失败", err)
	}
	// 对json串进行加密
	str, err := xstring.Aes(config_b, []byte(xgodb.GetString("FRAM_SYNC_DOMAIN_AES")))
	if err != nil {
		return xlog.AE("AES加密失败", err)
	}
	// 对加密后的字符串进行编码【BASE64编码】
	base64_str := xstring.BaseByte64(str)
	// 进行数据传输
	url := strings.Split(xgodb.GetString("FRAM_SYNC_URL"), ",")
	for i := 0; i < len(url); i++ {
		if url[i] == xgodb.GetString("FRAM_SYNC_DOMAIN") {
			continue
		}
		https.Post(url[i], map[string]string{
			"dates": base64_str,
			"urls":  xgodb.GetString("FRAM_SYNC_DOMAIN"),
		}, nil)
	}
	return nil
}
